/*
 * @lc app=leetcode.cn id=1636 lang=typescript
 *
 * [1636] 按照频率将数组升序排序
 */

// @lc code=start
function frequencySort(nums: number[]): number[] {
    let cache = new Map<number, number>();
    nums.forEach((i) => {
        cache.set(i, (cache.get(i) || 0) + 1);
    });
    return [...cache.entries()]
        .sort((a, b) => {
            // 注意，count 是升序，value 是降序
            return a[1] - b[1] || b[0] - a[0];
        })
        .flatMap((i) => {
            return new Array(i[1]).fill(i[0]);
        });
}
// @lc code=end
